/*******************************************************************************
 * Copyright (c) 2012 Daniele Parisi.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the GNU Public License v3.0
 * which accompanies this distribution, and is available at
 * http://www.gnu.org/licenses/gpl.html
 * 
 * Contributors:
 *     Daniele Parisi
 *     neb.inf@gmail.com
 *     http://www.danieleparisi.com/
 ******************************************************************************/
package org.jxreport.core;

import org.w3c.dom.Element;
import org.w3c.dom.NodeList;

public final class XMLUtils {

	/**
	 * I take a xml element and the tag name, look for the tag and get
	 * the text content
	 * i.e for <employee><name>John</name></employee> xml snippet if
	 * the Element points to employee node and tagName is 'name' I will return John
	 */
	public static String getTextValue(Element ele, String tagName) {
		String textVal = null;
		NodeList nl = ele.getElementsByTagName(tagName);
		if(nl != null && nl.getLength() > 0) {
			Element el = (Element)nl.item(0);
			// TODO:
			if(el.getParentNode().getNodeName().equals(ele.getNodeName()))
				textVal = el.getFirstChild().getNodeValue().trim();
		}

		return textVal;
	}

	/**
	 * Calls getTextValue and returns a int value
	 */
	public static int getIntValue(Element ele, String tagName) {
		//in production application you would catch the exception
		try{ return Integer.parseInt(getTextValue(ele,tagName)); }
		catch(Exception e){ return 0; }
	}
	
	/**
	 * Calls getTextValue and returns a boolean value
	 */
	public static boolean getBoolValue(Element ele, String tagName) {
		try{ 
			String value = getTextValue(ele,tagName).trim().toLowerCase();
			if(value.equals("true") || value.equals("1")) 
				return true;
			
			return false;
		}
		catch(Exception e){ return false; }
	}
}
